<html>
<head><meta charset="utf-8"><title>trait FactTypes · t-compiler/wg-polonius · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/index.html">t-compiler/wg-polonius</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html">trait FactTypes</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="176566557"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/176566557" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> csmoe <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#176566557">(Sep 25 2019 at 13:55)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> <a href="https://github.com/rust-lang/polonius/pull/130" target="_blank" title="https://github.com/rust-lang/polonius/pull/130">https://github.com/rust-lang/polonius/pull/130</a> <br>
those ugly clone came from <code>move/expect reference</code> errors, I'm trying to resolve.<br>
<a href="/user_uploads/4715/_SFOdCImc050I7o9TWgzca1x/pasted_image.png" target="_blank" title="pasted_image.png">pasted image</a></p>
<div class="message_inline_image"><a href="/user_uploads/4715/_SFOdCImc050I7o9TWgzca1x/pasted_image.png" target="_blank" title="pasted image"><img src="/user_uploads/4715/_SFOdCImc050I7o9TWgzca1x/pasted_image.png"></a></div>



<a name="176567371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/176567371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#176567371">(Sep 25 2019 at 14:02)</a>:</h4>
<p>If you can't find a way to work around that, maybe this is a good time to do the refactoring thing where we split the facts into parts for the different stages of the computation</p>



<a name="176567495"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/176567495" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#176567495">(Sep 25 2019 at 14:03)</a>:</h4>
<p>As I recall all parts of the computation use their own inputs, except for the CFG, which is used by all of them I think</p>



<a name="176568380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/176568380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> csmoe <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#176568380">(Sep 25 2019 at 14:13)</a>:</h4>
<p><span class="user-mention" data-user-id="204115">@Albin Stjerna</span> is this <a href="https://github.com/rust-lang/polonius/issues/112" target="_blank" title="https://github.com/rust-lang/polonius/issues/112">refactoring</a>?</p>



<a name="176568417"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/176568417" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#176568417">(Sep 25 2019 at 14:13)</a>:</h4>
<p>Yes, exactly that one!</p>



<a name="176568432"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/176568432" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#176568432">(Sep 25 2019 at 14:13)</a>:</h4>
<p>I had intended to do it myself, but if you feel up for it go ahead!</p>



<a name="176568445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/176568445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#176568445">(Sep 25 2019 at 14:13)</a>:</h4>
<p>But maybe check with err someone who isn't an overwintered master's student first :)</p>



<a name="177151723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177151723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> csmoe <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177151723">(Oct 02 2019 at 13:52)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> request for a review, "clones" cleared.</p>



<a name="177224833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177224833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177224833">(Oct 03 2019 at 08:41)</a>:</h4>
<p>ok so I just merged this, but then I realized it conflicts something bad with <span class="user-mention" data-user-id="116113">@lqd</span>'s renaming PR <a href="https://github.com/rust-lang-nursery/polonius/issues/127" target="_blank" title="https://github.com/rust-lang-nursery/polonius/issues/127">polonius#127</a></p>



<a name="177224839"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177224839" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177224839">(Oct 03 2019 at 08:41)</a>:</h4>
<p>which I was <em>also</em> about to go merge</p>



<a name="177224886"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177224886" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177224886">(Oct 03 2019 at 08:42)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> do you think you could squash/rebase that PR? (I probably should've merged it first, since it is older :doh: )</p>



<a name="177224913"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177224913" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177224913">(Oct 03 2019 at 08:42)</a>:</h4>
<p>:doh:</p>



<a name="177224933"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177224933" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177224933">(Oct 03 2019 at 08:43)</a>:</h4>
<p>sure, I planned to squash after making sure you liked the result</p>



<a name="177224947"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177224947" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177224947">(Oct 03 2019 at 08:43)</a>:</h4>
<p>esp wrt lower case naming in the rules comments</p>



<a name="177225366"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177225366" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177225366">(Oct 03 2019 at 08:50)</a>:</h4>
<p>I think I'm <span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span> on that</p>



<a name="177225370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177225370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177225370">(Oct 03 2019 at 08:50)</a>:</h4>
<p>closer matching between comments and code seems good</p>



<a name="177225401"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177225401" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177225401">(Oct 03 2019 at 08:51)</a>:</h4>
<p>alright I'll do it at lunch break</p>



<a name="177227505"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177227505" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177227505">(Oct 03 2019 at 09:26)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> &lt;3</p>



<a name="177233801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177233801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177233801">(Oct 03 2019 at 11:14)</a>:</h4>
<p>omg the conflicts <span aria-label="tears" class="emoji emoji-1f602" role="img" title="tears">:tears:</span></p>



<a name="177234535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177234535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177234535">(Oct 03 2019 at 11:27)</a>:</h4>
<p>oh wow</p>



<a name="177236980"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177236980" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177236980">(Oct 03 2019 at 12:08)</a>:</h4>
<p>maybe, and I can't stress this enough, rebasing and then squasing was not the smartest of moves</p>



<a name="177236997"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/177236997" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#177236997">(Oct 03 2019 at 12:08)</a>:</h4>
<p>done <a href="https://github.com/rust-lang/polonius/pull/127" target="_blank" title="https://github.com/rust-lang/polonius/pull/127">https://github.com/rust-lang/polonius/pull/127</a></p>



<a name="178007042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178007042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178007042">(Oct 12 2019 at 21:21)</a>:</h4>
<p>After a week of working with it, I'm not so sure about this change anymore, it seems we've traded complexity in defining function/type signatures (with 1 generic type parameter instead of 5) in 12 different places, for <code>T::</code>noise in 200+ different places</p>



<a name="178097648"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097648" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097648">(Oct 14 2019 at 12:18)</a>:</h4>
<p>Is this not merged into rustc yet?</p>



<a name="178097677"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097677" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097677">(Oct 14 2019 at 12:18)</a>:</h4>
<p>I just rebased off of Polonius master and apparently it doesn't compile with current rustc master</p>



<a name="178097696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097696">(Oct 14 2019 at 12:19)</a>:</h4>
<p>the change is only on master here yes, rustc wasn't updated to this new API</p>



<a name="178097716"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097716" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097716">(Oct 14 2019 at 12:19)</a>:</h4>
<p>Ah, ok</p>



<a name="178097790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097790">(Oct 14 2019 at 12:20)</a>:</h4>
<p>I'm lukewarm on doing so but we can talk about it at the next meeting, maybe you'll have an opinion on it as well</p>



<a name="178097806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097806">(Oct 14 2019 at 12:20)</a>:</h4>
<p>I don't think I do, but sure</p>



<a name="178097813"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097813" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097813">(Oct 14 2019 at 12:20)</a>:</h4>
<p>I can send you a diff if you want to build it tho</p>



<a name="178097817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097817">(Oct 14 2019 at 12:20)</a>:</h4>
<p>Yes please,</p>



<a name="178097824"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097824" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097824">(Oct 14 2019 at 12:20)</a>:</h4>
<p>ok just a sec</p>



<a name="178097828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178097828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178097828">(Oct 14 2019 at 12:21)</a>:</h4>
<p>It would be faster than me figuring it out myself :)</p>



<a name="178098069"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178098069" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178098069">(Oct 14 2019 at 12:25)</a>:</h4>
<p>I'm 4-5 days behind, so something like <a href="https://gist.github.com/lqd/03862f0f65a051fd60ef8074089b5c05" target="_blank" title="https://gist.github.com/lqd/03862f0f65a051fd60ef8074089b5c05">https://gist.github.com/lqd/03862f0f65a051fd60ef8074089b5c05</a></p>



<a name="178098960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178098960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178098960">(Oct 14 2019 at 12:38)</a>:</h4>
<p>Thank you!</p>



<a name="178098976"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178098976" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178098976">(Oct 14 2019 at 12:39)</a>:</h4>
<p>I think I have path-precise initialisation tracking now, but I'd like to test that it works :)</p>



<a name="178098992"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178098992" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178098992">(Oct 14 2019 at 12:39)</a>:</h4>
<p>Also, I think I may have a prototype for move errors literally in a few hours if that works</p>



<a name="178098995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178098995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178098995">(Oct 14 2019 at 12:39)</a>:</h4>
<p>But no way of testing it haha</p>



<a name="178099113"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178099113" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178099113">(Oct 14 2019 at 12:41)</a>:</h4>
<blockquote>
<p>Thank you!</p>
</blockquote>
<p>you're welcome</p>



<a name="178099187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178099187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178099187">(Oct 14 2019 at 12:42)</a>:</h4>
<p>yeah I'm unsure/don't remember the plan for those sorry, I can't help much</p>



<a name="178099212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178099212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178099212">(Oct 14 2019 at 12:42)</a>:</h4>
<p>No problem, I don't think there was even a plan :)</p>



<a name="178143280"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178143280" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Tshepang Lekhonkhobe <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178143280">(Oct 14 2019 at 22:07)</a>:</h4>
<blockquote>
<p>I'm 4-5 days behind, so something like <a href="https://gist.github.com/lqd/03862f0f65a051fd60ef8074089b5c05" target="_blank" title="https://gist.github.com/lqd/03862f0f65a051fd60ef8074089b5c05">https://gist.github.com/lqd/03862f0f65a051fd60ef8074089b5c05</a></p>
</blockquote>
<p>why not PR this</p>



<a name="178165454"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178165454" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Tshepang Lekhonkhobe <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178165454">(Oct 15 2019 at 06:42)</a>:</h4>
<p>oh, I realize that there is no polonius release with the changes</p>



<a name="178172662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/178172662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#178172662">(Oct 15 2019 at 08:47)</a>:</h4>
<p>I'd like to talk about this change first, and even so we wouldn't need to do a release just for this change per se</p>



<a name="179364292"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179364292" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179364292">(Oct 29 2019 at 19:19)</a>:</h4>
<p>OK, finally caught up here</p>



<a name="179364409"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179364409" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179364409">(Oct 29 2019 at 19:21)</a>:</h4>
<p>it seems like the "pro" of this change is </p>
<ul>
<li>fewer type parameters to copy-and-paste, yes</li>
<li>can add or refactor with less disruption</li>
<li>we can do things like <code>#[derive(Debug)]</code> now, which is kinda nice, though not a big thing</li>
</ul>
<p>the con is that you have to write <code>T::Fact</code> instead of <code>Fact</code>, primarily?</p>
<p>I'm ok either way I guess. I tend to ultimately move to the "bundle of associated types", but in this case it doesn't really offer that much in particular.</p>



<a name="179364744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179364744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179364744">(Oct 29 2019 at 19:24)</a>:</h4>
<p>maybe we can live with it for a while and after we have enough anecdata after the focus week, we can take a look at this again</p>



<a name="179364862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179364862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179364862">(Oct 29 2019 at 19:25)</a>:</h4>
<p>I'm looking at your PR <a href="https://github.com/rust-lang-nursery/polonius/issues/134" target="_blank" title="https://github.com/rust-lang-nursery/polonius/issues/134">polonius#134</a>, <span class="user-mention" data-user-id="116113">@lqd</span></p>



<a name="179364999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179364999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179364999">(Oct 29 2019 at 19:26)</a>:</h4>
<p>yay</p>



<a name="179365051"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365051" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365051">(Oct 29 2019 at 19:27)</a>:</h4>
<p>it also relates to Albin's initialization PR, errors in general (move/init errors, illegal subsets) etc</p>



<a name="179365192"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365192" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365192">(Oct 29 2019 at 19:28)</a>:</h4>
<p>(and I don't know how you envisioned <em>those</em> and their integration with rustc)</p>



<a name="179365237"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365237" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365237">(Oct 29 2019 at 19:29)</a>:</h4>
<p>seems like we should land <a href="https://github.com/rust-lang-nursery/polonius/issues/134" target="_blank" title="https://github.com/rust-lang-nursery/polonius/issues/134">polonius#134</a>?</p>



<a name="179365284"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365284" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365284">(Oct 29 2019 at 19:29)</a>:</h4>
<p>although I don't know what <span class="user-mention" data-user-id="204115">@Albin Stjerna</span> was referring to with <code>mem::replace</code></p>



<a name="179365385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365385">(Oct 29 2019 at 19:30)</a>:</h4>
<p>an older rev where I mem::replaced some of AllFacts' clones Vecs instead of cloning <em>them</em></p>



<a name="179365389"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365389" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365389">(Oct 29 2019 at 19:30)</a>:</h4>
<p>Nevermind that</p>



<a name="179365426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365426">(Oct 29 2019 at 19:31)</a>:</h4>
<p>okok</p>



<a name="179365440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365440">(Oct 29 2019 at 19:31)</a>:</h4>
<p>if we were going to get rid of the clones</p>



<a name="179365441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365441">(Oct 29 2019 at 19:31)</a>:</h4>
<p>we can land if you think it's interesting niko, esp if it makes sense wrt the things we don't know about what you had in mind</p>



<a name="179365525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365525">(Oct 29 2019 at 19:32)</a>:</h4>
<blockquote>
<p>if we were going to get rid of the clones</p>
</blockquote>
<p>I guess we'd have to change to <code>&amp;AllFacts</code></p>



<a name="179365529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365529">(Oct 29 2019 at 19:32)</a>:</h4>
<p>I don't quite know why we don't give ownership</p>



<a name="179365558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365558">(Oct 29 2019 at 19:32)</a>:</h4>
<p>me neither tbh</p>



<a name="179365574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365574">(Oct 29 2019 at 19:32)</a>:</h4>
<blockquote>
<p>we can land if you think it's interesting niko, esp if it makes sense wrt the things we don't know about what you had in mind</p>
</blockquote>
<p>well I definitely think factoring out the "common code" is good</p>



<a name="179365581"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365581" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365581">(Oct 29 2019 at 19:32)</a>:</h4>
<p>I'm more and more hoping that we can get away frm "specify the algorithm"</p>



<a name="179365620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365620">(Oct 29 2019 at 19:33)</a>:</h4>
<p>I guess that coming back to things I feel a bit overwhelmed by "too many choices"</p>



<a name="179365647"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365647" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365647">(Oct 29 2019 at 19:33)</a>:</h4>
<p>one question I had was would rustc just call polonius once ? or differently, say to get init/move errors at a point in time, borrowck errors at another</p>



<a name="179365713"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365713" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365713">(Oct 29 2019 at 19:34)</a>:</h4>
<p>I think rustc would call polonius once</p>



<a name="179365728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365728">(Oct 29 2019 at 19:34)</a>:</h4>
<p>presently we do all those things at once</p>



<a name="179365798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365798">(Oct 29 2019 at 19:35)</a>:</h4>
<p>because I was wondering whether the current NLL code would eg use liveness computed by polonius</p>



<a name="179365809"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365809" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365809">(Oct 29 2019 at 19:35)</a>:</h4>
<blockquote>
<p>I don't quite know why we don't give ownership</p>
</blockquote>
<p>maybe  just so the cli can run graphviz w/o a clone?</p>



<a name="179365829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365829">(Oct 29 2019 at 19:35)</a>:</h4>
<blockquote>
<p>because I was wondering whether the current NLL code would eg use liveness computed by polonius</p>
</blockquote>
<p>I would hope so</p>



<a name="179365840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365840">(Oct 29 2019 at 19:35)</a>:</h4>
<p>I mean it doesn't <em>now</em></p>



<a name="179365851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365851">(Oct 29 2019 at 19:35)</a>:</h4>
<p>still, what do you mean actually?</p>



<a name="179365869"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365869" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365869">(Oct 29 2019 at 19:35)</a>:</h4>
<p>in the presentation of errors?</p>



<a name="179365876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365876">(Oct 29 2019 at 19:35)</a>:</h4>
<blockquote>
<blockquote>
<p>I don't quite know why we don't give ownership</p>
</blockquote>
<p>maybe  just so the cli can run graphviz w/o a clone?</p>
</blockquote>
<p>That doesn't sound like a great trade-off honestly?</p>



<a name="179365891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365891">(Oct 29 2019 at 19:35)</a>:</h4>
<p>(I think all other uses of liveness would hopefully be replaced by polonius)</p>



<a name="179365951"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365951" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365951">(Oct 29 2019 at 19:36)</a>:</h4>
<blockquote>
<p>That doesn't sound like a great trade-off honestly?</p>
</blockquote>
<p>no, no it doesn't :)</p>



<a name="179365960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365960">(Oct 29 2019 at 19:36)</a>:</h4>
<p>given that we're cloning <em>anyway</em></p>



<a name="179365961"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179365961" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179365961">(Oct 29 2019 at 19:36)</a>:</h4>
<p>yeah if all uses of liveness are replaced by polonius then we're good</p>



<a name="179366020"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366020" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366020">(Oct 29 2019 at 19:36)</a>:</h4>
<p>I'm not 100% sure how to the "nice error reporting" would work -- I imagine we might be able to phrase some of what <em>it</em> does as well as polonius predicates -- but I assumed that would be something we'd worry about later</p>



<a name="179366021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366021">(Oct 29 2019 at 19:36)</a>:</h4>
<p>There goes the "only calculate liveness for interesting variables" idea</p>



<a name="179366033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366033">(Oct 29 2019 at 19:36)</a>:</h4>
<p>Why?</p>



<a name="179366064"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366064" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366064">(Oct 29 2019 at 19:37)</a>:</h4>
<p>rustc already tries to avoid computing liveness</p>



<a name="179366070"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366070" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366070">(Oct 29 2019 at 19:37)</a>:</h4>
<p>Ah</p>



<a name="179366075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366075">(Oct 29 2019 at 19:37)</a>:</h4>
<p>for liveness it can work</p>



<a name="179366081"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366081" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366081">(Oct 29 2019 at 19:37)</a>:</h4>
<p>I guess my point is: I dont' think we use liveness for very much :)</p>



<a name="179366090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366090">(Oct 29 2019 at 19:37)</a>:</h4>
<p>Well, it's less restrictive than I had expected</p>



<a name="179366097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366097">(Oct 29 2019 at 19:37)</a>:</h4>
<p>it works now in my branch I mean</p>



<a name="179366103"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366103" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366103">(Oct 29 2019 at 19:37)</a>:</h4>
<p>for initialization it's more shaky</p>



<a name="179366111"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366111" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366111">(Oct 29 2019 at 19:37)</a>:</h4>
<p>what is "it" here?</p>



<a name="179366126"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366126" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366126">(Oct 29 2019 at 19:37)</a>:</h4>
<p>...a relevant question</p>



<a name="179366134"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366134" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366134">(Oct 29 2019 at 19:37)</a>:</h4>
<p>it = "only calculating a limited subset of liveness"</p>



<a name="179366178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366178">(Oct 29 2019 at 19:38)</a>:</h4>
<p>one thing: rustc does recompute a lot of the initialization stuff for the "drop elaboration" code. I am <strong>not</strong> envisioning that we move that into polonius (at this time)</p>



<a name="179366204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366204">(Oct 29 2019 at 19:38)</a>:</h4>
<p>also, what is your branch, <span class="user-mention" data-user-id="116113">@lqd</span>? :)</p>



<a name="179366208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366208">(Oct 29 2019 at 19:38)</a>:</h4>
<p>lol</p>



<a name="179366217"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366217" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366217">(Oct 29 2019 at 19:38)</a>:</h4>
<p>I had an idea (in a different topic) of trying a more top-down approach that would only compute liveness for variables that we know are interesting because we know they have origins we are interested in, etc</p>



<a name="179366235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366235">(Oct 29 2019 at 19:38)</a>:</h4>
<blockquote>
<p>also, what is your branch, <span class="user-mention silent" data-user-id="116113">lqd</span>? :)</p>
</blockquote>
<p>to be clear, I just feel like you have a lot of branches :)</p>



<a name="179366246"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366246" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366246">(Oct 29 2019 at 19:39)</a>:</h4>
<p>very true :)</p>



<a name="179366258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366258">(Oct 29 2019 at 19:39)</a>:</h4>
<p>also, maybe we should move this over to some other topic, or something</p>



<a name="179366279"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366279" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366279">(Oct 29 2019 at 19:39)</a>:</h4>
<p><a href="https://github.com/lqd/borrow-check/tree/prefiltering" target="_blank" title="https://github.com/lqd/borrow-check/tree/prefiltering">https://github.com/lqd/borrow-check/tree/prefiltering</a> contains both placeholder loans and some of the "filtering" we're talking about here</p>



<a name="179366319"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366319" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366319">(Oct 29 2019 at 19:39)</a>:</h4>
<p>it filters too much as it also does on initialization, only checking it for "interesting variables" which comes out of the liveness and invalidated/erroneous loans</p>



<a name="179366378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366378">(Oct 29 2019 at 19:40)</a>:</h4>
<p>and that would prevent getting all init/move errors ofc</p>



<a name="179366392"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366392" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366392">(Oct 29 2019 at 19:40)</a>:</h4>
<p>ok</p>



<a name="179366461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366461">(Oct 29 2019 at 19:41)</a>:</h4>
<p>once we can also solidify the plans wrt placeholder loans (eg the "cfg root" question, or how we'd emit those loans in rustc, say)</p>



<a name="179366476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366476">(Oct 29 2019 at 19:41)</a>:</h4>
<p>maybe land the "context" PR, etc then I can make PRs out of those branches</p>



<a name="179366592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366592">(Oct 29 2019 at 19:42)</a>:</h4>
<p>Once the context lands I can (more easily) start testing my move errors</p>



<a name="179366683"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179366683" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179366683">(Oct 29 2019 at 19:43)</a>:</h4>
<p>it's a bit tough to work on both perf and completeness at the same time as they step on each other's toes</p>



<a name="179367788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179367788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179367788">(Oct 29 2019 at 19:56)</a>:</h4>
<blockquote>
<p>it's a bit tough to work on both perf and completeness at the same time as they step on each other's toes</p>
</blockquote>
<p>yep this is why I think we should focus on completeness first</p>



<a name="179367796"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/trait%20FactTypes/near/179367796" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/trait.20FactTypes.html#179367796">(Oct 29 2019 at 19:56)</a>:</h4>
<blockquote>
<p>once we can also solidify the plans wrt placeholder loans (eg the "cfg root" question, or how we'd emit those loans in rustc, say)</p>
</blockquote>
<p>yep! need to do that</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>